A service-level agreement (SLA) assigned to a logical volume in a storage system defines the quality of service (QoS) that is guaranteed to the user of the logical volume and particularity defines the performance, such as: response time, number of I/O operations per second (TOPS), and throughput (megabytes per second).
Various logical volumes of a storage system may be assigned with different SLAs and thus different required performance. Usually, the various logical volumes share the same system resources, such as cache memory.
Data included in write requests directed to different logical volumes is generally cached in a cache memory and is referred to as “dirty data”, until it is written to a permanent storage device (and becomes “clean data”). The space in the cache memory that is dedicated to dirty data (dirty data cache space) is limited in size. Generally, when the dirty data cache space is full with dirty data, new data to be written is suspended until other cached dirty data is safely written to the permanent storage and evicted from the cache. The suspended data enters the cache in a FIFO manner, upon cache eviction. Thus, suspended data enters the cache according to the order of its arrival time. Therefore, logical volumes that receive large bursts of write requests may consume cache resources on the expense of other logical volumes, regardless of their priority, level of performance or SLA conformity.
There is a need to control the entrance of data into the cache memory, in a manner that reflects the required performance defined in the SLA of the logical volumes and the actual performance.